// 4. 正序迭代器
// 迭代器模式 - 具体迭代器类（正序）
// 实现了IIterator接口的正序迭代器
// 用于正向遍历MyList集合中的元素
public class ListIterator<T> : IIterator<T>
{
  // 对要遍历的聚合对象的引用
  private readonly MyList<T> _list;

  // 当前迭代位置的索引
  // 初始化为0，表示指向第一个元素之前
  private int _currentIndex = 0;

  // 构造函数
  // 参数: list - 要遍历的聚合对象
  public ListIterator(MyList<T> list) => _list = list;

  // 获取当前位置的元素
  // 如果当前索引有效，则返回对应元素；否则返回默认值
  public T Current
      => _currentIndex < _list.Count ? _list.GetItem(_currentIndex) : default;

  // 移动到下一个元素
  // 实现逻辑：索引加1，然后检查是否还有更多元素
  // 返回值: 如果成功移动到下一个元素则返回true，否则返回false
  public bool MoveNext()
  {
    _currentIndex++;
    return _currentIndex < _list.Count;
  }

  // 重置迭代器到初始位置
  // 将索引重置为0，准备重新遍历
  public void Reset() => _currentIndex = 0;
}